/**
 * Copyright 2014  XCL-Charts
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * @Project XCL-Charts
 * @Description Android图表基类库
 * @author XiongChuanLiang<br></br>(xcl_168@aliyun.com)
 * @license http://www.apache.org/licenses/  Apache v2 License
 * @version 1.0
 */
package com.gitee.wsl.common.chart

/**
 * @ClassName XEnum
 * @Description 枚举定义
 * @author XiongChuanLiang<br></br>(xcl_168@aliyun.com)
 */
class ChartEnum  {

    enum class ChartDirection {
        VERTICAL,HORIZONTAL
    }

    /**
     * 设置轴线风格
     * @author XCL
     */
    enum class AxisLineStyle {
        NONE, CAP, FILLCAP
    }

    /**
     * 对于圆形的图，如饼图之类，用来确定标签的显示位置
     * @author XCL
     */
    enum class SliceLabelStyle {
        HIDE, INSIDE, OUTSIDE, BROKENLINE
    }

    /**
     * 标签标注框形状
     * @author XCL
     */
    enum class LabelBoxStyle {
        TEXT, RECT, CIRCLE, CAPRECT, ROUNDRECT, CAPROUNDRECT
    }

    /**
     * 用于设定柱形的风格，仅对flatbar有效
     * @author XCL
     */
    enum class BarStyle {
        GRADIENT, FILL, STROKE, OUTLINE, TRIANGLE, ROUNDBAR
    }

    /**
     * 柱形居中位置,依刻度线居中或依刻度中间点居中。
     * @author XCL
     */
    enum class BarCenterStyle {
        TICKMARKS, SPACE
    }

    /**
     * 轴标记类别:刻度线/标签
     * @author XCL
     */
    enum class TickType {
        MARKS, LABELS
    }

    /**
     * 图例类型
     * @author XCL
     */
    enum class LegendType {
        COLUMN, ROW
    }

    /**
     * 批注背景形状
     * @author XCL
     */
    enum class AnchorStyle {
        RECT, CAPRECT, ROUNDRECT, CAPROUNDRECT, CIRCLE, VLINE, HLINE, TOBOTTOM, TOTOP, TOLEFT, TORIGHT
    }

    /**
     * 数据区域的填充方式(雷达图/批注)
     * @author XCL
     */
    enum class DataAreaStyle {
        FILL, STROKE
    }

    /**
     * 设置圆形轴的类型
     * @author XCL
     */
    //DialChart RoundAxis
    enum class RoundAxisType {
        TICKAXIS, RINGAXIS, ARCLINEAXIS, FILLAXIS, CIRCLEAXIS, LINEAXIS
    }

    /**
     * 轴位置
     * @author XCL
     */
    enum class AxisLocation {
        TOP, BOTTOM, LEFT, RIGHT, HORIZONTAL_CENTER, VERTICAL_CENTER
    }

    /**
     * 设置圆形Tick轴的类型
     * @author XCL
     */
    enum class RoundTickAxisType {
        INNER_TICKAXIS, OUTER_TICKAXIS
    }

    /**
     * 雷达图显示类型(蛛网或圆形)
     * @author XCL
     */
    enum class RadarChartType {
        RADAR, ROUND
    }

    /**
     * 动态边框风格
     * @author XCL
     */
    enum class DyInfoStyle {
        RECT, ROUNDRECT, CAPRECT, CIRCLE, CAPROUNDRECT //,ELLIPSE
    }

    /**
     * 动态线类型
     * Cross 指定交叉的水平线和垂直线。
     * BackwardDiagonal 从右上到左下的对角线的线条图案。
     * Vertical		垂直线
     * Horizontal 水平线
     * @author XCL
     */
    enum class DyLineStyle {
        Cross, BackwardDiagonal, Vertical, Horizontal
    }

    /**
     * 标签线是否显示圆点及显示风格
     * @author XCL
     */
    enum class LabelLinePoint {
        NONE, BEGIN, END, ALL
    }

    /**
     * 标签信息的保存类型
     * ONLYPOSITION : 保存坐标信息，但不显示标签
     * ALL : 保存坐标信息，也显示标签
     * @author XCL
     */
    enum class LabelSaveType {
        NONE, ONLYPOSITION, ALL
    }

    /**
     * 轴标题显示几格.
     * NORMAL 显示在轴中间
     * ENDPOINT 显示在轴的结束点及交叉点(仅支持左下点)位置
     * @author XCL
     */
    enum class AxisTitleStyle {
        NORMAL, ENDPOINT
    }

    /**
     * 标签显示方式
     * @author XCL
     */
    enum class LabelLineFeed {
        NORMAL, ODD_EVEN, EVEN_ODD
    }

    enum class ODD_EVEN {
        ODD, EVEN, NONE
    }

    //柱形标签位置
    enum class ItemLabelStyle {
        NORMAL, INNER, OUTER, BOTTOM
    }

    /**
     * 图的所属类型
     * @author XCL
     */
    class ChartType {
        companion object{
           val NONE = ChartType()
           val BAR= ChartType()
           val BAR3D= ChartType()
           val STACKBAR= ChartType()
           val PIE= ChartType()
           val PIE3D= ChartType()
           val DOUNT= ChartType()
           val LINE= ChartType()
           val SPLINE= ChartType()
           val AREA= ChartType()
           val ROSE= ChartType()
           val RADAR= ChartType()
           val DIAL= ChartType()
           val RANGEBAR= ChartType()
           val ARCLINE= ChartType()
           val CIRCLE= ChartType()
           val SCATTER= ChartType()
           val BUBBLE= ChartType()
           val GAUGE= ChartType()
           val FUNNEL = ChartType()
        }
    }
}